@哈哈鱼
2年前 提问
1个回答
XSS 漏洞怎么防范
Andrew
2年前
防范xss漏洞的措施:
输入过滤
有时候需要多次过滤 ,例如 < scrip < script > t >过滤掉 < script > 后还是 < script >
,需要注意多个过滤器的先后次序。当多个过滤器一起生效时,有可能后进行的过滤导致前面的过滤失效。
纯前端渲染
在纯前端渲染中,我们会明确的告诉浏览器:下面要设置的内容是文本(.innerText
),还是属性(.setAttribute
),还是样式(.style
)等等。浏览器不会被轻易的被欺骗,执行预期外的代码了。
转义 HTML
如果拼接 HTML 是必要的,就需要采用合适的转义库,对 HTML 模板各处插入点进行充分的转义。
常用的模板引擎,如 doT.js、ejs、FreeMarker 等,对于 HTML 转义通常只有一个规则,就是把 & < > " ' /
这几个字符转义掉,确实能起到一定的 XSS 防护作用。
标签和属性基于白名单过滤
对于副文本编辑器来说,其产物本身就是 html 代码,所以没办法简单粗暴使用转义来处理,应该要对内容中的标签和属性,基于白名单进行过滤。(附 XSS 黑名单:DOM 中的内联事件监听器如onclick
等、<a>
标签的href
属性、<script>
标签、css 中的url
功能)